﻿using Abp.Application.Services;
using Abp.Application.Services.Dto;
using DevM.Development.DataMigration.Dto;
using DevM.Development.Resources.Dto;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace DevM.Development.DataMigration
{
    public interface IDataMigrationAppService : IApplicationService
    {
        Task<DatabaseDto> AddDatabase(AddDatabaseInput input);
        Task<DatabaseDto> GetDatabase(EntityDto<long> databaseId);
        Task<DatabaseDto> UpdateDatabase(UpdateDatabaseInput input);
        Task DeleteDatabase(EntityDto<long> databaseId);
        Task<PageOutput<DatabaseDto>> GetDatabaseList(GetDatabaseListInput input);


        Task<DataDto> AddData(AddDataInput input);
        Task<DataDto> UpdateData(UpdateDataInput input);
        Task DeleteData(EntityDto<long> databaseId);
        Task<DataDto> GetData(EntityDto<long> dataId);
        Task<PageOutput<DataDto>> GetDataList(GetDataListInput input);

        Task<ConfigDto> AddConfig(AddConfigInput input);
        Task<ConfigDto> UpdateConfig(UpdateConfigInput input);
        Task DeleteConfig(EntityDto<long> configId);
        Task<ConfigDto> GetConfig(EntityDto<long> configId);
        Task<PageOutput<ConfigDto>> GetConfigList(GetConfigListInput input);

        Task<List<ResourceDto>> GetConfigResourcesByConfigId(EntityDto<long> configId);
        Task DeleteConfigResource(EntityDto<long> configId);
        Task<List<ResourceDto>> GetDataResourcesByDataId(EntityDto<long> dataId);
        Task<List<ResourceDto>> GetDatabaseResourcesByDatabaseId(EntityDto<long> databaseId);
        Task DeleteDatabaseResource(EntityDto<long> databaseId);
    }
}
